package point;

import java.util.ArrayList;

/**题目：
 *  给定一个有序数组，要求返回和为某个值的下标值,如果有多个，那么返回乘积最小的两个
 *  y: 1 2 3 4 5 6            8
 *      [1,5] [2,4]
 * @Author Gavin
 * @date 2021.12.07 21:54
 */
public class sum_2 {
    //解题思路，就是使用两个指针，一个向左一个向右移动
    //注意乘积最小的有点迷惑人，最外层的两个值的乘积就是最小的
    public static ArrayList<int[]> solution(int[] arrays,int nums){
        ArrayList<int[]> list=new ArrayList<>();
        int i=0,j=arrays.length-1;
        while (i<j){
            if(arrays[i]+arrays[j]<nums)++i;
            else if(arrays[i]+arrays[j]>nums)--j;
            else list.add(new int[]{i,j});
        }
        return list;
    }
}
